import axios from 'axios'
export default {
    namespaced: true, // 开启命名空间 防止各模块变量重名
    // vuex保存的数据
    state() {
        return {
            list: []
        }
    },
    // 修改vuex保存的数据必须通过mutations
    mutations: {
        getGoodsList(state, list) {
            state.list = list
        },
        setSmallChecked(state, e) {
            // 遍历把全选状态同步给list数组中的goods_state属性
            state.list.map(item=>item.goods_state = e.target.checked)
        }
    },
    // 异步处理的地方
    actions: {
        asyncGoodsList(store) {
            axios({
                url: "https://www.escook.cn/api/cart",
            }).then(item => { store.commit('getGoodsList', item.data.list) });
        }
    },
    // vuex中的计算属性
    getters: {
        getPrice(state) {
            // 筛选选中并计算总价格
            return state.list
                .filter((item) => item.goods_state === true)
                .reduce((sum, item) => {
                    return (sum += item.goods_price * item.goods_count);
                }, 0);
        },
        getCount(state) {
            // 筛选选中并计算总数量
            return state.list
                .filter((item) => item.goods_state === true)
                .reduce((sum, item) => {
                    return (sum += item.goods_count);
                }, 0);
        },
        isAll(state) {
            // 遍历查找子选框中是否全部状态为true 只要其中一个不是true 返回false
            return state.list.every((item) => item.goods_state == true);
        },
    }
}